#!groovy

def call(def data){
    withSonarQubeEnv('SonarQube') {
        //注意这里withSonarQubeEnv()中的参数要与之前SonarQube servers中Name的配置相同
        withMaven(maven: 'maven') {
            script{
                tools.PrintMes("静态代码检查",'green')
                sh ''' mvn clean install -Dmaven.test.skip=true \
                sonar:sonar -Dsonar.projectKey="${data.projectName}" \
                -Dsonar.projectName="${data.projectName}" \
                -Dsonar.projectVersion="1.0" \
                -Dsonar.sourceEncoding=UTF-8 \
                -Dsonar.exclusions=src/test/** \
                -Dsonar.sources=src/ \
                -Dsonar.java.binaries=target/classes \
                -Dsonar.host.url="http://sonar.xpboot.com" 
                '''
            }
        }
    }
    
    timeout(1) {
        //这里设置超时时间1分钟，不会出现一直卡在检查状态
        //利用sonar webhook功能通知pipeline代码检测结果，未通过质量阈，pipeline将会fail
        def qg = waitForQualityGate('sonar')
        //注意：这里waitForQualityGate()中的参数也要与之前SonarQube servers中Name的配置相同
        if (qg.status != 'OK') {
            error "未通过Sonarqube的代码质量阈检查，请及时修改！failure: ${qg.status}"
        }
    }
}